package com.example.archive.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.archive.entity.SystemLog;
import com.example.archive.service.SystemLogService;
import com.example.archive.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 系统日志与审计控制器
 * 提供系统操作日志的查询功能
 * 支持分页查询和操作审计
 */
@RestController
@RequestMapping("/api/system-logs")
@CrossOrigin
public class SystemLogController {
    
    @Autowired
    private SystemLogService systemLogService;
    
    /**
     * 分页查询系统日志
     * 支持分页查询，包含用户名信息
     * 支持按操作类型和时间范围筛选
     * 用于系统审计和操作追踪
     * 
     * @param current 当前页码，默认为1
     * @param size 每页大小，默认为10
     * @param action 操作类型（可选）
     * @param startTime 开始时间（可选）
     * @param endTime 结束时间（可选）
     * @return 统一响应格式，包含分页查询结果
     */
    @GetMapping("/page")
    public Result<Page<SystemLog>> getLogsPage(
            @RequestParam(defaultValue = "1") int current,
            @RequestParam(defaultValue = "10") int size,
            @RequestParam(required = false) String action,
            @RequestParam(required = false) String startTime,
            @RequestParam(required = false) String endTime) {
        try {
            Page<SystemLog> page;
            // 如果有查询条件，使用带条件的查询
            if ((action != null && !action.isEmpty()) || 
                (startTime != null && !startTime.isEmpty()) || 
                (endTime != null && !endTime.isEmpty())) {
                page = systemLogService.getLogsWithConditions(current, size, action, startTime, endTime);
            } else {
                // 否则使用普通查询
                page = systemLogService.getLogsWithUsername(current, size);
            }
            return Result.success(page);
        } catch (Exception e) {
            return Result.fail(500, "获取失败：" + e.getMessage());
        }
    }
} 